#include <vcl.h>
#pragma hdrstop

#include "ObjetoCompuesto.h"

ObjetoCompuesto::ObjetoCompuesto(){
        cont=0;
}

void ObjetoCompuesto::initialize(int i) {
        objetos = new Objeto3D*[i];
        cont=0;
}

ObjetoCompuesto::~ObjetoCompuesto(){
    for(int i=0;i<cont;i++)
        delete this->objetos[i];
    delete[] objetos;
}

void ObjetoCompuesto::insertarObjeto(Objeto3D * obj){
    objetos[cont]=obj;
    cont++;
}

void ObjetoCompuesto::eliminarObjeto(int pos){
    if (objetos[pos]!=NULL) {
        delete objetos[pos];
        for (int i=pos; i<cont; i++)
            objetos[i]=objetos[i+1];
        cont--;
    }
}

Objeto3D* ObjetoCompuesto::dameObjeto ( int numero ) {
        return objetos[numero];
}

void ObjetoCompuesto::dibujar() {
    glPushMatrix();
      // Configurar color
      glColor3f(color.getR()/255, color.getG()/255, color.getB()/255);

      // Coger matriz actual
      GLfloat mm[16];
      glGetFloatv(GL_MODELVIEW_MATRIX,mm);
      TAfin* m = new TAfin(mm);

      // Aplicar matriz de transformacion
      m->postMultiplicar(marco);
      glLoadMatrixf(m->mat);

      for (int i=0;i<cont;i++) {
          ObjetoCompuesto* obj = (ObjetoCompuesto*)objetos[i];
          obj->dibujar();
      }

    glPopMatrix();
}
